This present invention relates to computer user interfaces, and more particularly to a computer user interface that adapts to different input device types.
Most computers built today can be and are operated through interaction with a Graphical User Interface, or GUI. As opposed to a simple scrolling text display, the GUI provides a much richer display through the use of bitmapped graphics. The graphical format allows the video display to not only present information in an intelligible, interesting format, but also allows the GUI to display xe2x80x9ccontrolsxe2x80x9d, e.g., buttons, scroll bars, pulldown menus, pop-up menus, dialog boxes, etc. A computer user can manipulate these controls with a mouse using a xe2x80x9cpoint-and-clickxe2x80x9d technique to exercise various computer functions.
The controls on the display are visually manipulated by the GUI as a user operates the keyboard and mouse, thus providing feedback to the user. For instance, when a user moves the mouse, a visible mouse cursor tracks across the screen proportionally. When the user points the mouse cursor at a screen xe2x80x9cbuttonxe2x80x9d and clicks the appropriate mouse button, the screen button may, through shading techniques, be made to appear to be depressed while the user holds the mouse button down. Or when a user selects a scroll bar and moves the mouse, the scroll bar may appear to be xe2x80x9cgrabbedxe2x80x9d and moved by the mouse, as it moves along the screen proportionally with the mouse movement.
Early GUIs were custom subroutines built into specific application programs. These GUIs responded to hardware interrupts for mouse and keyboard input, and drew graphics directly to the computer""s display. If the GUI was to work with more than one type of hardware, the GUI had to be built with knowledge as to the peculiarities of each type of hardware that the GUI was compatible with.
Modern GUIs typically take a different approach, wherein they are either an integral part of the computer""s operating system (OS), or run xe2x80x9con top ofxe2x80x9d the OS. Instead of interacting with the hardware directly, application programs can interact with the GUI. This provides several advantages. First, the GUI can provide a device-independent interface to the applications, such that each application need not know about the hardware peculiarities of the display, input device(s), printers, communications ports, etc. The GUI uses device drivers to translate I/O between these physical devices and the applications. Second, the GUI allows multiple applications to share a common display, e.g., by associating a window with each running application, and then multitasking the applications. And third, the single GUI provides a consistent xe2x80x9clook and feelxe2x80x9d for a wide variety of applications, allowing a user familiar with the GUI to quickly master a new application.
Applications work with a typical GUI, such as the GUI provided by Microsoft Windows(trademark), using a set of GUI subroutines and messaging. The application calls the GUI subroutines to create, manipulate, and eventually destroy graphical xe2x80x9cwindowsxe2x80x9d on the computer display. The application can also call GUI subroutines to create standard controls and dialog boxes. When the controls are subsequently manipulated, the GUI provides visual feedback to the user, and at the same time dispatches messages to notify the application that one of its requested controls has been manipulated by the user, and how. The GUI queues other messages for the application as wellxe2x80x94messages that notify the application when it needs to repaint part of one of its windows, when keyboard keys or mouse buttons have been manipulated, etc.
The device-independent interface also allows well-behaved applications to operate with input devices other than a traditional mouse, with no special capabilities on the part of the applications. Trackballs, joysticks, J-sticks, glide pads, pen tablets, and other input devices can emulate a traditional mouse by using a driver that translates the input device""s sensed inputs into equivalent mouse-like movements. The GUI reports these translated inputs as mouse movements to the application.
As another example of how the device independent interface operates, mouse hardware is now available with a top-mounted wheel that, when rotated, allows a user to scroll the client window that has the input focus. The GUI has been modified to take wheel rotation physical inputs and translate them into scroll messages. To the application, wheel rotation produces a scroll message just as if the user had pointed the mouse at a slider, clicked, and dragged the slider. But without GUI modification to accept the new type of physical input (i.e., scroll wheel input), this additional input could not be made to have this time-saving effect.